package com.xxx.feignclient;

import com.xxx.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * 商品服务客户端 (伪http客户端)
 *
 * @author blijojo
 * @date 2021/5/22
 */
@FeignClient(value = "PRODUCT")
public interface ProductClient {
    /**
     * 调用商品服务
     *
     * @return 字符串
     */
    @GetMapping("/product/test")
    String product();

    /**
     * 调用list服务
     *
     * @return 字符串
     */
    @GetMapping("/product/list")
    String list();

    /**
     * 测试OpenFeign传递基本数据类型参数 ?传参
     *
     * @param name 姓名
     * @param age  年龄
     * @return 字符串
     */
    @GetMapping("/product/test1")
    String test1(@RequestParam("name") String name, @RequestParam("age") String age);

    /**
     * 测试OpenFeign传递基本数据类型参数 路径传参 rest风格
     *
     * @param name 姓名
     * @param age  年龄
     * @return 字符串
     */
    @GetMapping("/product/test2/{name}/{age}")
    String test2(@PathVariable("name") String name, @PathVariable("age") String age);

    /**
     * 测试传递对象类型参数 application/json方式
     *
     * @param product 商品对象
     * @return 字符串
     */
    @PostMapping("/product/test3")
    String test3(@RequestBody Product product);

    /**
     * 测试传递数组
     *
     * @param ids id数组
     * @return 字符串
     */
    @GetMapping("/product/test4")
    String test4(@RequestParam("ids") String[] ids);

    /**
     * 测试传递集合
     *
     * @param ids id数组
     * @return 字符串
     */
    @GetMapping("/product/test5")
    String test5(@RequestParam("ids") String[] ids);

}
